package com.example.snake;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author Jason
 * @PACKAGE_NAME com.example.snake
 * @Description 绘制窗体 绘制图形 绘制蛇的身体
 * @date 2023-12-07 16:04
 */
//继承Frame父类
public class SnackFrame03 extends Frame {
    private int moveDistance = 1; // 减少移动距离
    /**
     * 蛇的主体部分
     */
    private Node[] body = {
            new Node(140, 100),
            new Node(120, 100),
            new Node(100, 100)
    };

    // 构造器中初始化窗体
    public SnackFrame03() {
        int width = 600;
        int height = 500;
        //设置距离显示器距离
        //        this.setLocation(200,100);
        //获取屏幕尺寸
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        //计算窗口左上角x坐标
        int x = (screenSize.width - width) / 2;
        //计算窗口左上角y坐标
        int y = (screenSize.height - height) / 2;
        //设置窗口位置
        this.setLocation(x, y);
        //设置窗口大小
        this.setSize(width, height);
        //设置背景色
        this.setBackground(Color.magenta);
        this.setTitle("贪吃蛇V1.0");
        //禁止改变窗体大小
        this.setResizable(false);
        //显示窗体
        this.setVisible(true);
        //添加窗口监听
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                //退出虚拟机
                System.exit(0);
            }
        });
    }

    /**
     * 绘制窗体内容
     * 窗体显示 | 更新 自动调用
     *
     * @param g 画笔
     */
    @Override
    public void paint(Graphics g) {
        g.setColor(Color.ORANGE);
        for (int i = 0; i < body.length; i++) {
            //蛇的主体部分
            body[i].drawNode(g, i);
        }
    }

//    public static void main(String[] args) {
//        new SnackFrame03();
//    }
}
